<?php

class Resource_Backend_Manager_Abstract extends Kernel_Manager_List 
{
    
    /**
     * Наименование действия по умолчанию (для данного списка).
     *
     * @var string
     */
    protected $_default = 'edit';
    
    /**
    * Define navigation type.
    * 
    * @var string
    */
    protected $_type;
    
    
    public function __construct($params = array()) 
    {
        if (!in_array($this->_type, Resource_Backend::navigationTypes())) {
            trigger_error('Wrong navigation type set', E_USER_ERROR);
        }
        
        parent::__construct($params);
    }
    
    /**
     * Возвращает параметры, передаваемых в конструктор компонента, реализующего
     * указанное действие.
     *
     * @param   string  $name
     * @return  array
    */
    protected function _getActionParams($name) 
    {
        $navigation = Backend_Filter_Structure::get('manager');
        
        $entries = Kernel::factory('Resource_Block', $navigation)->entriesCnt();
        
        if (empty($entries) && 'add' != $name) {
            $this->_location(array('action' => 'add'));
        }
        
        
        // assign navigation name
        Application::getResponse()->assign('navigation', $navigation);
        $params = array('navigation' => $navigation);
        
        switch ($name) 
        {
            case 'add': 
                $params;
                break;
            case 'edit':
                $params += array('id' => Kernel::factory('Resource_Block', $navigation)->active());
                break;
            case 'delete':
                if ('hidden' == $this->_type) {
                    $params = array();
                }
                break;
            case 'deletebg':
                $params = array('back' => self::_tmp_url(array('action' => 'edit')));
                $this->_type = 'common';
                break;
            default:
                $params = array();
        }
        
        return $params + parent::_getActionParams($name);
    }
    
    /**
     * Возвращает пэкидж компонентов менеджера.
     *
     * @return  string
     */
    protected function _package() 
    {
        return 'Resource_Backend_Action_' . ucfirst($this->_type);
    }
    
}
